#ifndef __EVENT_H
#define __EVENT_H

#if __STDC__
#define _Cdecl
#else
#define _Cdecl	cdecl
#endif

#ifndef __PAS__
#define _CType _Cdecl
#else
#define _CType pascal
#endif

#ifndef NULL
#if defined(__TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
#define	NULL	0
#else
#define	NULL	0L
#endif
#endif

#include "eventdef.h"

struct event_t
{
	int	src;		//事情来源, 见eventdef.h
	unsigned code;	//事情代码, 见eventdef.h
};


#ifdef __cplusplus
extern "C" {
#endif

//发布事情（put_event与_putevent功能相同，调用格式不同）
void _Cdecl put_event(struct event_t *event,int head);	//head为0表示加到队列尾，为1表示加到队列头
void _Cdecl _putevent(int src,int code,int head);	//head为0表示加到队列尾，为1表示加到队列头

//读事情（get_event与_getevent功能相同，调用格式不同）
int  _Cdecl _getevent(int *src);	//返回事情代码,src非空则填入事情来源
int  _Cdecl get_event(struct event_t *event);	//返回事情代码,event非空则填入来源和代码

//检查下一个事情(但并不取出它,如果没有输入则返回零)
int  _Cdecl peek_next_event(int *src);	//返回事情代码,src非空则填入事情来源

//设置接受事情
int  _Cdecl set_event_func(int (*callbackfunc)(struct event_t *ev),struct event_t *event_set);

//关闭事情接收
void _Cdecl close_event_func(int handler);

#ifdef __cplusplus
}
#endif

#endif

